package cn.lx.elasticsearch.autocomplete.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 自动补全响应 DTO
 * 
 * @author lx
 * @since 2024-01-01
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SuggestResponse<T> {

    /**
     * 建议列表
     */
    private List<SuggestionItem<T>> suggestions;

    /**
     * 总数量
     */
    private Long total;

    /**
     * 搜索耗时（毫秒）
     */
    private Long took;

    /**
     * 是否成功
     */
    private Boolean success;

    /**
     * 错误信息
     */
    private String message;

    /**
     * 建议项
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class SuggestionItem<T> {
        /**
         * 建议文本
         */
        private String text;

        /**
         * 高亮文本
         */
        private String highlightedText;

        /**
         * 原始数据
         */
        private T source;

        /**
         * 评分
         */
        private Float score;

        /**
         * 建议类型
         */
        private String type;
    }
}
